class Population:   
    """ Klasse Population zur Simulation der Bevoelkerungsanzahl, mithilfe
    einer Geburten- und Sterberate """
    def __init__(self, popDev, birthRate, deathRate):
        """ Methode zur Initialisierung der Attribute popDev, birthRate und deathRate,
        die die Bevoelkerungsentwicklung beschreiben """
        self.popDev = [popDev]
        self.birthRate = birthRate  # holt sich variablen Wert von unten
        self.deathRate = deathRate  # holt sich variablen Wert von unten
        print "Startpopulation:",popDev,"|","Geburtenrate:", birthRate,"|", "Sterberate:", deathRate

    def birth(self, popDev):
        """ Funktion zur Berechnung der Anzahl der Geburten, abhaenging von der
        Geburtenrate """
        return popDev*self.birthRate*tstep  # berechnet absolute Geburten
    
    def death(self, popDev):
        """ Funktion zur Berechnung der Anzahl der Todesfaelle, abhaengig von der
        Sterberate """
        return popDev*self.deathRate*tstep  # berechnet absolute Sterbefaelle
    
    def populationSim(self):
        """ Methode zur Simulation der Bevoelkerungsentwicklung """
        i = 0
        while i < trange/tstep:
            # Formel zur Berechnung der aktuellen Bevoelkerung. Bev = Bev_alt + Geburten - Todesfaelle)
            self.popDev.append(self.popDev[i] + self.birth(self.popDev[i]) - self.death(self.popDev[i]))
            i = i+1     
            print "-"*43
            print "Population nach",i*tstep,"Jahren:",self.popDev[i]   # Ausgabe der Bevoelkerung zum Zeitpunkt
            print "Geburten im",i*tstep,"-sten Jahr:", self.birth(self.popDev[i]) # Ausgabe der Geburten im Jahr
            print "Todesfaelle im",i*tstep,"-sten Jahr:", self.death(self.popDev[i]) # Ausgabe der Todesfaelle im Jahr
        return self.popDev








        
